home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 708 / intuisup / intuisup42.lha / Intuisup / source.lha / Gadgets / gadgets_test.c next >
C/C++ Source or Header  |  1992-04-08  |  21KB  |  618 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: gadgets_test.c
  6.  *    Created ..: Thursday 19-Dec-91 20:52:59
  7.  *    Revision .: 0
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  12.  *
  13.  * $Revision Header ********************************************************/
  14.  
  15.     /* Includes */
  16.  
  17. #include <exec/types.h>
  18. #include <exec/memory.h>
  19. #include <graphics/gfxbase.h>
  20. #include <graphics/text.h>
  21. #include <intuition/intuition.h>
  22. #ifdef AZTEC_C
  23. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  24. #endif
  25. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  26. #include "/render/render.h"
  27. #include "/texts/texts.h"
  28. #include "gadgets.h"
  29.  
  30.     /* Defines */
  31.  
  32. #define WINDOW_WIDTH        600
  33. #define WINDOW_HEIGHT        180
  34. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL)
  35. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  36. #define WINDOW_TITLE        (UBYTE *)" Gadgets test "
  37.  
  38. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  39. #define OPEN_WINDOW_FLAGS    OPEN_WINDOW_FLAG_CENTER_WINDOW
  40.  
  41. #define MESSAGE_LEFT_EDGE    0
  42. #define MESSAGE_TOP_EDGE    (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
  43. #define MESSAGE_WIDTH        WINDOW_WIDTH
  44. #define MESSAGE_HEIGHT        8
  45. #define MESSAGE_TEXT1        "Gadget %d text %s"
  46. #define MESSAGE_TEXT2        "Gadget %d value %ld"
  47. #define MESSAGE_TEXT_ATTR    &topaz80_attr
  48.  
  49.     /* Globals */
  50.  
  51. struct IntuitionBase  *IntuitionBase;
  52. struct GfxBase        *GfxBase;
  53. struct Library        *DiskfontBase;
  54. struct Library        *LayersBase;
  55.  
  56.     /* Statics */
  57.  
  58. STATIC struct NewWindow  test_new_window = {
  59.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
  60.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  61. };
  62. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  63.                            FS_NORMAL, FPF_ROMFONT },
  64.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  65.                            FS_NORMAL, FPF_ROMFONT };
  66.     /* Defines for test gadgets */
  67.  
  68. #define TEST_GADGET_BUTTON        0
  69. #define TEST_GADGET_BUTTON_IMAGE    1
  70. #define TEST_GADGET_CHECK        2
  71. #define TEST_GADGET_MX            3
  72. #define TEST_GADGET_STRING        4
  73. #define TEST_GADGET_INTEGER        5
  74. #define TEST_GADGET_SLIDER_HORIZ    6
  75. #define TEST_GADGET_SLIDER_VERT        7
  76. #define TEST_GADGET_SCROLLER_HORIZ    8
  77. #define TEST_GADGET_SCROLLER_VERT    9
  78. #define TEST_GADGET_CYCLE        10
  79. #define TEST_GADGET_COUNT        11
  80. #define TEST_GADGET_LISTVIEW        12
  81. #define TEST_GADGET_PALETTE        13
  82.  
  83. #define TEST_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  84. #define TEST_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  85. #define TEST_GADGET1_LEFT_EDGE        20
  86. #define TEST_GADGET1_TOP_EDGE        10
  87. #define TEST_GADGET1_WIDTH        ((6 + 2) * 10)
  88. #define TEST_GADGET1_HEIGHT        19
  89. #define TEST_GADGET1_TEXT        "_Button"
  90. #define TEST_GADGET1_TEXT_ATTR        &topaz60_attr
  91.  
  92. #define TEST_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  93. #define TEST_GADGET2_FLAGS        (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  94. #define TEST_GADGET2_LEFT_EDGE        120
  95. #define TEST_GADGET2_TOP_EDGE        15
  96. #define TEST_GADGET2_WIDTH        16
  97. #define TEST_GADGET2_HEIGHT        8
  98. #define TEST_GADGET2_TEXT        "_Image"
  99. #define TEST_GADGET2_TEXT_ATTR        &topaz60_attr
  100. #define TEST_GADGET2_NORMAL_RENDER    NULL    /* (LONG)&image1 */
  101. #define TEST_GADGET2_SELECT_RENDER    (BYTE *)&image2
  102.  
  103. #define TEST_GADGET3_TYPE        GADGET_DATA_TYPE_CHECK
  104. #define TEST_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  105. #define TEST_GADGET3_LEFT_EDGE        20
  106. #define TEST_GADGET3_TOP_EDGE        33
  107. #define TEST_GADGET3_WIDTH        0
  108. #define TEST_GADGET3_HEIGHT        0
  109. #define TEST_GADGET3_TEXT        "_Check gadget"
  110. #define TEST_GADGET3_TEXT_ATTR        &topaz60_attr
  111. #define TEST_GADGET3_CHECK_STATE    1
  112.  
  113. #define TEST_GADGET4_TYPE        GADGET_DATA_TYPE_MX
  114. #define TEST_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  115. #define TEST_GADGET4_LEFT_EDGE        20
  116. #define TEST_GADGET4_TOP_EDGE        60
  117. #define TEST_GADGET4_WIDTH        0
  118. #define TEST_GADGET4_HEIGHT        0
  119. #define TEST_GADGET4_TEXT        "Mutual e_xclude gadget"
  120. #define TEST_GADGET4_TEXT_ATTR        &topaz60_attr
  121. #define TEST_GADGET4_SPACING        2
  122. #define TEST_GADGET4_ACTIVE        1
  123. #define TEST_GADGET4_TEXT_ARRAY        &mx_array[0]
  124.  
  125. #define TEST_GADGET5_TYPE        GADGET_DATA_TYPE_STRING
  126. #define TEST_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  127. #define TEST_GADGET5_LEFT_EDGE        20
  128. #define TEST_GADGET5_TOP_EDGE        103
  129. #define TEST_GADGET5_WIDTH        68
  130. #define TEST_GADGET5_HEIGHT        0
  131. #define TEST_GADGET5_TEXT        "_String gadget"
  132. #define TEST_GADGET5_TEXT_ATTR        &topaz60_attr
  133. #define TEST_GADGET5_INPUT_LEN        10
  134. #define TEST_GADGET5_AUTO_ACTIVATE    ((LONG)TEST_GADGET_INTEGER << 16 | TEST_GADGET_INTEGER)
  135. #define TEST_GADGET5_INPUT_DEFAULT    "Test"
  136.  
  137. #define TEST_GADGET6_TYPE        GADGET_DATA_TYPE_INTEGER
  138. #define TEST_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  139. #define TEST_GADGET6_LEFT_EDGE        (20 + 14 * 10 + 8)
  140. #define TEST_GADGET6_TOP_EDGE        118
  141. #define TEST_GADGET6_WIDTH        68
  142. #define TEST_GADGET6_HEIGHT        0
  143. #define TEST_GADGET6_TEXT        "I_nteger gadget"
  144. #define TEST_GADGET6_TEXT_ATTR        &topaz60_attr
  145. #define TEST_GADGET6_INPUT_LEN        10
  146. #define TEST_GADGET6_AUTO_ACTIVATE    ((LONG)TEST_GADGET_STRING << 16 | TEST_GADGET_STRING)
  147. #define TEST_GADGET6_INPUT_DEFAULT    (BYTE *)123
  148.  
  149. #define TEST_GADGET7_TYPE        GADGET_DATA_TYPE_SLIDER
  150. #define TEST_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  151. #define TEST_GADGET7_LEFT_EDGE        20
  152. #define TEST_GADGET7_TOP_EDGE        135
  153. #define TEST_GADGET7_WIDTH        100
  154. #define TEST_GADGET7_HEIGHT        9
  155. #define TEST_GADGET7_TEXT        "S_lider gadget"
  156. #define TEST_GADGET7_TEXT_ATTR        &topaz60_attr
  157. #define TEST_GADGET7_MIN        -10
  158. #define TEST_GADGET7_MAX        10
  159. #define TEST_GADGET7_LEVEL        0
  160.  
  161. #define TEST_GADGET8_TYPE        GADGET_DATA_TYPE_SLIDER
  162. #define TEST_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_BELOW)
  163. #define TEST_GADGET8_LEFT_EDGE        390
  164. #define TEST_GADGET8_TOP_EDGE        10
  165. #define TEST_GADGET8_WIDTH        18
  166. #define TEST_GADGET8_HEIGHT        50
  167. #define TEST_GADGET8_TEXT        "Sli_der gadget"
  168. #define TEST_GADGET8_TEXT_ATTR        &topaz60_attr
  169. #define TEST_GADGET8_MIN        -10
  170. #define TEST_GADGET8_MAX        10
  171. #define TEST_GADGET8_LEVEL        0
  172.  
  173. #define TEST_GADGET9_TYPE        GADGET_DATA_TYPE_SCROLLER
  174. #define TEST_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  175. #define TEST_GADGET9_LEFT_EDGE        (20 + 15 * 10 + 8)
  176. #define TEST_GADGET9_TOP_EDGE        148
  177. #define TEST_GADGET9_WIDTH        100
  178. #define TEST_GADGET9_HEIGHT        0
  179. #define TEST_GADGET9_TEXT        "Scr_oller gadget"
  180. #define TEST_GADGET9_TEXT_ATTR        &topaz60_attr
  181. #define TEST_GADGET9_VISIBLE        4
  182. #define TEST_GADGET9_TOTAL        20
  183. #define TEST_GADGET9_TOP        (BYTE *)10
  184.  
  185. #define TEST_GADGET10_TYPE        GADGET_DATA_TYPE_SCROLLER
  186. #define TEST_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  187. #define TEST_GADGET10_LEFT_EDGE        490
  188. #define TEST_GADGET10_TOP_EDGE        24
  189. #define TEST_GADGET10_WIDTH        0
  190. #define TEST_GADGET10_HEIGHT        50
  191. #define TEST_GADGET10_TEXT        "Sc_roller gadget"
  192. #define TEST_GADGET10_TEXT_ATTR        &topaz60_attr
  193. #define TEST_GADGET10_VISIBLE        4
  194. #define TEST_GADGET10_TOTAL        20
  195. #define TEST_GADGET10_TOP        (BYTE *)10
  196.  
  197. #define TEST_GADGET11_TYPE        GADGET_DATA_TYPE_CYCLE
  198. #define TEST_GADGET11_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  199. #define TEST_GADGET11_LEFT_EDGE        265
  200. #define TEST_GADGET11_TOP_EDGE        78
  201. #define TEST_GADGET11_WIDTH        160
  202. #define TEST_GADGET11_HEIGHT        15
  203. #define TEST_GADGET11_TEXT        "C_ycle gadget"
  204. #define TEST_GADGET11_TEXT_ATTR        &topaz60_attr
  205. #define TEST_GADGET11_SPACING        1
  206. #define TEST_GADGET11_ACTIVE        2
  207. #define TEST_GADGET11_TEXT_ARRAY    &text_array[0]
  208.  
  209. #define TEST_GADGET12_TYPE        GADGET_DATA_TYPE_COUNT
  210. #define TEST_GADGET12_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  211. #define TEST_GADGET12_LEFT_EDGE        325
  212. #define TEST_GADGET12_TOP_EDGE        96
  213. #define TEST_GADGET12_WIDTH        80
  214. #define TEST_GADGET12_HEIGHT        12
  215. #define TEST_GADGET12_TEXT        "Co_unt gadget"
  216. #define TEST_GADGET12_TEXT_ATTR        &topaz80_attr
  217. #define TEST_GADGET12_MIN        100
  218. #define TEST_GADGET12_MAX        1000
  219. #define TEST_GADGET12_VALUE        (BYTE *)600
  220.  
  221. #define TEST_GADGET13_TYPE        GADGET_DATA_TYPE_LISTVIEW
  222. #define TEST_GADGET13_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2 | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED)
  223. #define TEST_GADGET13_LEFT_EDGE        370
  224. #define TEST_GADGET13_TOP_EDGE        126
  225. #define TEST_GADGET13_WIDTH        104
  226. #define TEST_GADGET13_HEIGHT        35
  227. #define TEST_GADGET13_TEXT        "List _view gadget"
  228. #define TEST_GADGET13_TEXT_ATTR        &topaz60_attr
  229. #define TEST_GADGET13_SPACING        0
  230. #define TEST_GADGET13_TOP        1
  231. #define TEST_GADGET13_LIST        (BYTE *)&test_list
  232.  
  233. #define TEST_GADGET14_TYPE        GADGET_DATA_TYPE_PALETTE
  234. #define TEST_GADGET14_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  235. #define TEST_GADGET14_LEFT_EDGE        220
  236. #define TEST_GADGET14_TOP_EDGE        23
  237. #define TEST_GADGET14_WIDTH        150
  238. #define TEST_GADGET14_HEIGHT        20
  239. #define TEST_GADGET14_TEXT        "_Palette gadget"
  240. #define TEST_GADGET14_TEXT_ATTR        &topaz60_attr
  241. #define TEST_GADGET14_DEPTH        2
  242. #define TEST_GADGET14_COLOR_OFFSET    0
  243. #define TEST_GADGET14_ACTIVE_COLOR    (BYTE *)0
  244.  
  245.     /* Statics for test gadgets */
  246.  
  247. STATIC UWORD image1_data[] = {
  248.     0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
  249.     0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
  250. };
  251. STATIC struct Image  image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
  252. STATIC UWORD image2_data[] = {
  253.     0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
  254.     0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
  255. };
  256. STATIC struct Image  image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
  257. STATIC BYTE *mx_array[] = {
  258.     "Fast File System", "Old File System", "Custom File System", NULL
  259. };
  260. STATIC BYTE *text_array[] = {
  261.     "Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
  262.     "TeX", "Unix", NULL
  263. };
  264. STATIC struct List  test_list;
  265. STATIC struct GadgetData  test_gadget_data[] = {
  266.    {
  267.     TEST_GADGET1_TYPE,        /* gd_Type */
  268.     TEST_GADGET1_FLAGS,        /* gd_Flags */
  269.     TEST_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  270.     TEST_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  271.     TEST_GADGET1_WIDTH,        /* gd_Width */
  272.     TEST_GADGET1_HEIGHT,        /* gd_Height */
  273.     TEST_GADGET1_TEXT,        /* *gd_Text */
  274.     TEST_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  275.     { 0, 0, 0 }
  276.    }, {
  277.     TEST_GADGET2_TYPE,        /* gd_Type */
  278.     TEST_GADGET2_FLAGS,        /* gd_Flags */
  279.     TEST_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  280.     TEST_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  281.     TEST_GADGET2_WIDTH,        /* gd_Width */
  282.     TEST_GADGET2_HEIGHT,        /* gd_Height */
  283.     TEST_GADGET2_TEXT,        /* *gd_Text */
  284.     TEST_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  285.     { 0,
  286.     TEST_GADGET2_NORMAL_RENDER,    /* gd_ButtonNormalRender */
  287.     TEST_GADGET2_SELECT_RENDER    /* gd_ButtonSelectRender */
  288.     }
  289.    }, {
  290.     TEST_GADGET3_TYPE,        /* gd_Type */
  291.     TEST_GADGET3_FLAGS,        /* gd_Flags */
  292.     TEST_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  293.     TEST_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  294.     TEST_GADGET3_WIDTH,        /* gd_Width */
  295.     TEST_GADGET3_HEIGHT,        /* gd_Height */
  296.     TEST_GADGET3_TEXT,        /* *gd_Text */
  297.     TEST_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  298.     {
  299.     TEST_GADGET3_CHECK_STATE,    /* gd_CheckState */
  300.     0, 0 }
  301.    }, {
  302.     TEST_GADGET4_TYPE,        /* gd_Type */
  303.     TEST_GADGET4_FLAGS,        /* gd_Flags */
  304.     TEST_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  305.     TEST_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  306.     TEST_GADGET4_WIDTH,        /* gd_Width */
  307.     TEST_GADGET4_HEIGHT,        /* gd_Height */
  308.     TEST_GADGET4_TEXT,        /* *gd_Text */
  309.     TEST_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  310.     {
  311.     TEST_GADGET4_SPACING,        /* gd_MXSpacing */
  312.     TEST_GADGET4_ACTIVE,        /* gd_MXActiveEntry */
  313.     TEST_GADGET4_TEXT_ARRAY        /* gd_MXTextArray */
  314.     }
  315.    }, {
  316.     TEST_GADGET5_TYPE,        /* gd_Type */
  317.     TEST_GADGET5_FLAGS,        /* gd_Flags */
  318.     TEST_GADGET5_LEFT_EDGE,        /* gd_LeftEdge */
  319.     TEST_GADGET5_TOP_EDGE,        /* gd_TopEdge */
  320.     TEST_GADGET5_WIDTH,        /* gd_Width */
  321.     TEST_GADGET5_HEIGHT,        /* gd_Height */
  322.     TEST_GADGET5_TEXT,        /* *gd_Text */
  323.     TEST_GADGET5_TEXT_ATTR,        /* *gd_TextAttr */
  324.     {
  325.     TEST_GADGET5_INPUT_LEN,        /* gd_InputLen */
  326.     TEST_GADGET5_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  327.     TEST_GADGET5_INPUT_DEFAULT    /* gd_InputDefault */
  328.     }
  329.    }, {
  330.     TEST_GADGET6_TYPE,        /* gd_Type */
  331.     TEST_GADGET6_FLAGS,        /* gd_Flags */
  332.     TEST_GADGET6_LEFT_EDGE,        /* gd_LeftEdge */
  333.     TEST_GADGET6_TOP_EDGE,        /* gd_TopEdge */
  334.     TEST_GADGET6_WIDTH,        /* gd_Width */
  335.     TEST_GADGET6_HEIGHT,        /* gd_Height */
  336.     TEST_GADGET6_TEXT,        /* *gd_Text */
  337.     TEST_GADGET6_TEXT_ATTR,        /* *gd_TextAttr */
  338.     {
  339.     TEST_GADGET6_INPUT_LEN,        /* gd_InputLen */
  340.     TEST_GADGET6_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  341.     TEST_GADGET6_INPUT_DEFAULT    /* gd_InputDefault */
  342.     }
  343.    }, {
  344.     TEST_GADGET7_TYPE,        /* gd_Type */
  345.     TEST_GADGET7_FLAGS,        /* gd_Flags */
  346.     TEST_GADGET7_LEFT_EDGE,        /* gd_LeftEdge */
  347.     TEST_GADGET7_TOP_EDGE,        /* gd_TopEdge */
  348.     TEST_GADGET7_WIDTH,        /* gd_Width */
  349.     TEST_GADGET7_HEIGHT,        /* gd_Height */
  350.     TEST_GADGET7_TEXT,        /* *gd_Text */
  351.     TEST_GADGET7_TEXT_ATTR,        /* *gd_TextAttr */
  352.     {
  353.     TEST_GADGET7_MIN,        /* gd_SliderMin */
  354.     TEST_GADGET7_MAX,        /* gd_SliderMax */
  355.     TEST_GADGET7_LEVEL        /* gd_SliderLevel */
  356.     }
  357.    }, {
  358.     TEST_GADGET8_TYPE,        /* gd_Type */
  359.     TEST_GADGET8_FLAGS,        /* gd_Flags */
  360.     TEST_GADGET8_LEFT_EDGE,        /* gd_LeftEdge */
  361.     TEST_GADGET8_TOP_EDGE,        /* gd_TopEdge */
  362.     TEST_GADGET8_WIDTH,        /* gd_Width */
  363.     TEST_GADGET8_HEIGHT,        /* gd_Height */
  364.     TEST_GADGET8_TEXT,        /* *gd_Text */
  365.     TEST_GADGET8_TEXT_ATTR,        /* *gd_TextAttr */
  366.     {
  367.     TEST_GADGET8_MIN,        /* gd_SliderMin */
  368.     TEST_GADGET8_MAX,        /* gd_SliderMax */
  369.     TEST_GADGET8_LEVEL        /* gd_SliderLevel */
  370.     }
  371.    }, {
  372.     TEST_GADGET9_TYPE,        /* gd_Type */
  373.     TEST_GADGET9_FLAGS,        /* gd_Flags */
  374.     TEST_GADGET9_LEFT_EDGE,        /* gd_LeftEdge */
  375.     TEST_GADGET9_TOP_EDGE,        /* gd_TopEdge */
  376.     TEST_GADGET9_WIDTH,        /* gd_Width */
  377.     TEST_GADGET9_HEIGHT,        /* gd_Height */
  378.     TEST_GADGET9_TEXT,        /* *gd_Text */
  379.     TEST_GADGET9_TEXT_ATTR,        /* *gd_TextAttr */
  380.     {
  381.     TEST_GADGET9_VISIBLE,        /* gd_ScrollerVisible */
  382.     TEST_GADGET9_TOTAL,        /* gd_ScrollerTotal */
  383.     TEST_GADGET9_TOP        /* gd_ScrollerTop */
  384.     }
  385.    }, {
  386.     TEST_GADGET10_TYPE,        /* gd_Type */
  387.     TEST_GADGET10_FLAGS,        /* gd_Flags */
  388.     TEST_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  389.     TEST_GADGET10_TOP_EDGE,        /* gd_TopEdge */
  390.     TEST_GADGET10_WIDTH,        /* gd_Width */
  391.     TEST_GADGET10_HEIGHT,        /* gd_Height */
  392.     TEST_GADGET10_TEXT,        /* *gd_Text */
  393.     TEST_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  394.     {
  395.     TEST_GADGET10_VISIBLE,        /* gd_ScrollerVisible */
  396.     TEST_GADGET10_TOTAL,        /* gd_ScrollerTotal */
  397.     TEST_GADGET10_TOP        /* gd_ScrollerTop */
  398.     }
  399.    }, {
  400.     TEST_GADGET11_TYPE,        /* gd_Type */
  401.     TEST_GADGET11_FLAGS,        /* gd_Flags */
  402.     TEST_GADGET11_LEFT_EDGE,    /* gd_LeftEdge */
  403.     TEST_GADGET11_TOP_EDGE,        /* gd_TopEdge */
  404.     TEST_GADGET11_WIDTH,        /* gd_Width */
  405.     TEST_GADGET11_HEIGHT,        /* gd_Height */
  406.     TEST_GADGET11_TEXT,        /* *gd_Text */
  407.     TEST_GADGET11_TEXT_ATTR,    /* *gd_TextAttr */
  408.     {
  409.     TEST_GADGET11_SPACING,        /* gd_CycleSpacing */
  410.     TEST_GADGET11_ACTIVE,        /* gd_CycleActive */
  411.     TEST_GADGET11_TEXT_ARRAY    /* gd_CycleTextArray */
  412.     }
  413.    }, {
  414.     TEST_GADGET12_TYPE,        /* gd_Type */
  415.     TEST_GADGET12_FLAGS,        /* gd_Flags */
  416.     TEST_GADGET12_LEFT_EDGE,    /* gd_LeftEdge */
  417.     TEST_GADGET12_TOP_EDGE,        /* gd_TopEdge */
  418.     TEST_GADGET12_WIDTH,        /* gd_Width */
  419.     TEST_GADGET12_HEIGHT,        /* gd_Height */
  420.     TEST_GADGET12_TEXT,        /* *gd_Text */
  421.     TEST_GADGET12_TEXT_ATTR,    /* *gd_TextAttr */
  422.     {
  423.     TEST_GADGET12_MIN,        /* gd_CountMin */
  424.     TEST_GADGET12_MAX,        /* gd_CountMax */
  425.     TEST_GADGET12_VALUE        /* gd_CountValue */
  426.     }
  427.    }, {
  428.     TEST_GADGET13_TYPE,        /* gd_Type */
  429.     TEST_GADGET13_FLAGS,        /* gd_Flags */
  430.     TEST_GADGET13_LEFT_EDGE,    /* gd_LeftEdge */
  431.     TEST_GADGET13_TOP_EDGE,        /* gd_TopEdge */
  432.     TEST_GADGET13_WIDTH,        /* gd_Width */
  433.     TEST_GADGET13_HEIGHT,        /* gd_Height */
  434.     TEST_GADGET13_TEXT,        /* *gd_Text */
  435.     TEST_GADGET13_TEXT_ATTR,    /* *gd_TextAttr */
  436.     {
  437.     TEST_GADGET13_SPACING,        /* gd_ListViewSpacing */
  438.     TEST_GADGET13_TOP,        /* gd_ListViewTop */
  439.     TEST_GADGET13_LIST        /* gd_ListViewList */
  440.     }
  441.    }, {
  442.     TEST_GADGET14_TYPE,        /* gd_Type */
  443.     TEST_GADGET14_FLAGS,        /* gd_Flags */
  444.     TEST_GADGET14_LEFT_EDGE,    /* gd_LeftEdge */
  445.     TEST_GADGET14_TOP_EDGE,        /* gd_TopEdge */
  446.     TEST_GADGET14_WIDTH,        /* gd_Width */
  447.     TEST_GADGET14_HEIGHT,        /* gd_Height */
  448.     TEST_GADGET14_TEXT,        /* *gd_Text */
  449.     TEST_GADGET14_TEXT_ATTR,    /* *gd_TextAttr */
  450.     {
  451.     TEST_GADGET14_DEPTH,        /* gd_PaletteDepth */
  452.     TEST_GADGET14_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  453.     TEST_GADGET14_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  454.     }
  455.    }, {
  456.     INTUISUP_DATA_END        /* end of gadget data array */
  457.    }
  458. };
  459.     /* Prototypes */
  460.  
  461. VOID test_action(struct RenderInfo  *ri, struct Window  *win,
  462.                             struct GadgetList  *gl);
  463. BOOL build_test_list(VOID);
  464. VOID free_test_list(VOID);
  465.  
  466.     /* Gadgets test */
  467.  
  468.    LONG
  469. main(VOID)
  470. {
  471.    struct RenderInfo  *ri;
  472.    struct Window      *win;
  473.    struct GadgetList  *gl;
  474.  
  475.    MWInit((BPTR)NULL, 0L);
  476.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  477.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  478.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  479.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  480.            if (build_test_list() == TRUE) {
  481.           if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  482.              if (win = open_window(ri, &test_new_window,
  483.                                OPEN_WINDOW_FLAGS)) {
  484.             test_gadget_data[TEST_GADGET_BUTTON_IMAGE].gd_SpecialData.gd_ButtonData.gd_ButtonNormalRender = &image1;
  485.             if (gl = create_gadgets(ri, &test_gadget_data[0], 0,
  486.                                  0, NULL)) {
  487.                display_gadgets(win, gl);
  488.                test_action(ri, win, gl);
  489.                remove_gadgets(gl);
  490.                free_gadgets(gl);
  491.             }
  492.             close_window(win, FALSE);
  493.              }
  494.              free_render_info(ri);
  495.           }
  496.           free_test_list();
  497.            }
  498.            CloseLibrary(LayersBase);
  499.         }
  500.         CloseLibrary(DiskfontBase);
  501.      }
  502.      CloseLibrary(GfxBase);
  503.       }
  504.       CloseLibrary(IntuitionBase);
  505.    }
  506.    MWTerm();
  507.    return(0L);
  508. }
  509.     /* Perform IDCMP action */
  510.  
  511.    VOID
  512. test_action(struct RenderInfo  *ri, struct Window  *win,
  513.                              struct GadgetList  *gl)
  514. {
  515.    struct MsgPort  *up = win->UserPort;
  516.    BOOL input = TRUE, keepon = TRUE;
  517.  
  518.    /* Waiting for close window event */
  519.    do {
  520.       struct IntuiMessage  *msg;
  521.  
  522.       WaitPort(up);
  523.       while (msg = get_msg(up)) {
  524.      BYTE *format, buffer[80];
  525.  
  526.      switch (msg->Class) {
  527.         case CLOSEWINDOW :
  528.            keepon = FALSE;
  529.            break;
  530.  
  531.         case ISUP_ID :
  532.            clear_window(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  533.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  534.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  535.            if (msg->Code == TEST_GADGET_STRING) {
  536.           format = MESSAGE_TEXT1;
  537.            } else {
  538.           format = MESSAGE_TEXT2;
  539.            }
  540.            sprintf(&buffer[0], format, msg->Code, msg->IAddress);
  541.            print_text(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  542.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  543.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  544.            /* Change gadgets */
  545.            switch (msg->Code) {
  546.           case TEST_GADGET_CHECK :
  547.              if (msg->IAddress) {
  548.             set_gadget_attributes(gl, TEST_GADGET_LISTVIEW,
  549.                           GADGET_DATA_FLAG_DISABLED, 0L,
  550.                 USE_CURRENT_VALUE, (ULONG)TEST_GADGET13_TOP,
  551.                         (VOID *)TEST_GADGET13_LIST);
  552.              } else {
  553.             set_gadget_attributes(gl, TEST_GADGET_LISTVIEW,
  554.                           GADGET_DATA_FLAG_DISABLED,
  555.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  556.                        USE_CURRENT_VALUE, (VOID *)NULL);
  557.              }
  558.              break;
  559.  
  560.           case TEST_GADGET_BUTTON :
  561.              if (input == FALSE) {
  562.             set_gadget_attributes(gl, TEST_GADGET_INTEGER,
  563.                GADGET_DATA_FLAG_DISABLED, 0L, USE_CURRENT_VALUE,
  564.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  565.             input = TRUE;
  566.              } else {
  567.             set_gadget_attributes(gl, TEST_GADGET_INTEGER,
  568.                           GADGET_DATA_FLAG_DISABLED,
  569.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  570.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  571.             input = FALSE;
  572.              }
  573.              break;
  574.            }
  575.            break;
  576.      }
  577.      reply_msg(msg);
  578.       }
  579.    } while (keepon == TRUE);
  580. }
  581.     /* Build test list */
  582.  
  583.    BOOL
  584. build_test_list(VOID)
  585. {
  586.    struct List  *list = &test_list;
  587.    BYTE **text = &text_array[0];
  588.    BOOL success = TRUE;
  589.  
  590.    NewList(list);
  591.    while (*text) {
  592.       struct Node  *node;
  593.  
  594.       if (node = AllocMem((LONG)sizeof(struct Node), (LONG)MEMF_PUBLIC |
  595.                                   MEMF_CLEAR)) {
  596.      node->ln_Name = *text++;
  597.      AddTail(list, node);
  598.       } else {
  599.      free_test_list();
  600.      success = FALSE;
  601.      break;
  602.       }
  603.    }
  604.    return(success);
  605. }
  606.     /* Free test list */
  607.  
  608.    VOID
  609. free_test_list(VOID)
  610. {
  611.    struct List  *list = &test_list;
  612.    struct Node  *node;
  613.  
  614.    while (node = RemHead(list)) {
  615.       FreeMem(node, (LONG)sizeof(struct Node));
  616.    }
  617. }
  618.